package com.suntianci.stock.vo.resp;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
import com.suntianci.stock.pojo.domain.PermissionDomain;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.util.List;

/**
 * @ClassName LoginRespVo
 * @Author 孙天赐
 * @Date 2024/12/25 10:33
 * @Description TODO: 登录响应实体Vo类
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@ApiModel(description = "用户登录响应数据封装类")
public class LoginRespVo {
    /**
     * 用户ID
     * JsonSerialize注解作用：将Long类型数字进行json格式转化时，转成String格式类型
     */
    @JsonSerialize(using = ToStringSerializer.class)
    @ApiModelProperty(value = "主键ID")
    private Long id;

    /**
     * 用户名
     */
    @ApiModelProperty(value = "用户名")
    private String username;

    /**
     * 电话
     */
    @ApiModelProperty(value = "电话")
    private String phone;

    /**
     * 昵称
     */
    @ApiModelProperty(value = "昵称")
    private String nickName;

    /**
     * 真实名称
     */
    @ApiModelProperty(value = "真实名称")
    private String realName;

    /**
     * 性别（1.男 2.女）
     */
    @ApiModelProperty(value = "性别（1.男 2.女）")
    private Integer sex;

    /**
     * 账户状态（1.正常 2.锁定）
     */
    @ApiModelProperty(value = "账户状态（1.正常 2.锁定）")
    private Integer status;

    /**
     * 邮箱
     */
    @ApiModelProperty(value = "邮箱")
    private String email;

    /**
     * 侧边栏权限树（不包含按钮权限）
     */
    @ApiModelProperty(value = "侧边栏权限树（不包含按钮权限）")
    private List<PermissionDomain> menus;

    /**
     * 按钮权限标识，即菜单权限编码（前端按钮权限标识）
     */
    @ApiModelProperty(value = "按钮权限标识")
    private List<String> permissions;

    /**
     * 用户票据token
     */
    @ApiModelProperty(value = "用户票据token")
    private String accessToken;

}
